// 2025/5/31
// 四个选项

#include <iostream>
#include <vector>
using namespace std;

int m, ans = 0;
vector<int> option(4);
vector<int> limit(12, -1);
vector<int> cur(12);

void dfs(int pos)
{
    if(pos == 12)
        ans++;
    else if(limit[pos] != -1)
    {
        cur[pos] = cur[limit[pos]];
        if(option[cur[pos]] > 0)
        {
            option[cur[pos]]--;
            dfs(pos + 1);
            option[cur[pos]]++;
        }
    }
    else
    {
        for(int i = 0; i < 4; i++)
        {
            cur[pos] = i;
            if(option[i] > 0)
            {
                option[i]--;
                dfs(pos + 1);
                option[i]++;
            }
        }
    }
}

int find(int n)
{
    while(limit[n] != -1)
    {
        n = limit[n];
    }
    return n;
}

int main() {
    cin >> option[0] >> option[1] >> option[2] >> option[3] >> m;
    int x, y;
    while(m--)
    {
        cin >> x >> y;
        x = find(x - 1);
        y = find(y - 1);
        if(x < y)
            limit[y] = x;
        else if(x > y)
            limit[x] = y;
    }
    dfs(0);
    cout << ans << endl;
}
// 64 位输出请用 printf("%lld")